// 防抖（Debounce）和节流（Throttle）都是用于控制函数执行频率的技术。
// 防抖: n 秒后在执行该事件，若在 n 秒内被重复触发，则重新计时
// 节流: n 秒内只运行一次，若在 n 秒内重复触发，只有一次生效
// 防抖的原理是，在指定的时间间隔内，如果事件持续触发，则重新计时，直到事件停止触发后才执行函数。简单来说，防抖会等待一段时间，如果在这段时间内没有再次触发事件，才会执行函数。

// 节流的原理是，在指定的时间间隔内，无论事件触发多少次，都只会执行一次函数。简单来说，节流会限制函数的执行频率，确保在指定的时间间隔内只执行一次函数。

// 下面是它们的具体实现原理：

// 防抖的实现原理：
// 1. 设置一个定时器变量，初始值为 null。
// 2. 当事件触发时，先清除之前的定时器。
// 3. 再设置一个新的定时器，延迟一定的时间。
// 4. 如果在延迟时间内再次触发事件，重复步骤2和3。
// 5. 如果在延迟时间内没有再次触发事件，定时器触发后执行函数。

// 节流的实现原理：
// 1. 设置一个标志变量，初始值为 true。
// 2. 当事件触发时，先判断标志变量的值。
// 3. 如果标志变量为 true，则执行函数，并将标志变量设置为 false。
// 4. 启动一个定时器，在指定的时间间隔后将标志变量重新设置为 true。
// 5. 如果在定时器等待的时间间隔内再次触发事件，重复步骤2到4。
// 6. 如果在定时器等待的时间间隔内没有再次触发事件，标志变量重新设置为 true。

// 防抖和节流的选择取决于具体的需求。如果需要在事件停止触发后执行函数，可以选择防抖。如果需要在一定的时间间隔内控制函数的执行频率，可以选择节流。